﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using HMS_Hospital_Team2._6.BL;
using System.Windows.Forms;
using HMS_Hospital_Team2._6.DA;

namespace HMS_Hospital_Team2._6.GUI
{
    public partial class UcDichVu : UserControl
    {
        bool checkbutton;
        HMSHospitalEntities context = new HMSHospitalEntities();
        DichVuBL dichvu = new DichVuBL();
        public UcDichVu()
        {
            InitializeComponent();
        }

        private void UcDichVu_Load(object sender, EventArgs e)
        {
            // load dữ liệu lên gridview
            grcDanhsachDV_DV.DataSource = dichvu.LoadthongtinDV_BL();
            // load dữ liệu lên combobox
            cmbNhomDV_DV.DataSource = dichvu.LoadthongtinNhomDV_BL();
            cmbNhomDV_DV.DisplayMember = "TenNhomDV";
            cmbNhomDV_DV.ValueMember = "MaNhomDV";
            cmbNhomDV_DV.SelectedItem = null;
           
            
        }

        // xữ lý nút Sửa
        private void btnSua_DV_Click_1(object sender, EventArgs e)
        {
            //Chỉnh readonly = false cho tất cả các textfield và checkbox, combobox cho phép chỉnh sửa.
            cmbNhomDV_DV.Enabled = true;
            txtMaDV_DV.Properties.ReadOnly = true;
            txtTenDV_DV.Properties.ReadOnly = false;
            txtGiaDV_DV.Properties.ReadOnly = false;
            memoGhiChuDV_DV.Properties.ReadOnly = false;
            chkTrangThai_DV.Properties.ReadOnly = false;

            //Enable nut Luu va Lam Moi
            btnLuu_DV.Enabled = true;
            btnLamMoi_DV.Enabled = true;
            btnTaomoi_DV.Enabled = false;
            btnSua_DV.Enabled = false;
            btnLamMoi_DV.Enabled = false;
            //Đánh dấu người dùng đang sử dụng chức năng chỉnh sửa
            checkbutton = false;
        }

        // Xữ lý nút Tạo mới
        private void btnTaomoi_DV_Click(object sender, EventArgs e)
        {
            LamMoi();
            //Tạo mới khi chưa xem thông tin chi tiết
            grcThongtinDV_DV.Enabled = true;
            btnSua_DV.Enabled = false;

            //Tạo mới khi đang xem thông tin chi tiết
            txtMaDV_DV.Properties.ReadOnly = false;
            txtTenDV_DV.Properties.ReadOnly = false;
            cmbNhomDV_DV.Enabled = true;
            txtGiaDV_DV.Properties.ReadOnly = false;
            memoGhiChuDV_DV.Properties.ReadOnly = false;
            chkTrangThai_DV.Properties.ReadOnly = false;
            btnLuu_DV.Enabled = true;
            btnLamMoi_DV.Enabled = true;
            LamMoi();

            //danh dau ng dung dang su dung chuc nang tao moi
            checkbutton = true;
        }

        // Xữ lý nút Làm mới
        private void btnLamMoi_DV_Click(object sender, EventArgs e)
        {
            LamMoi();
        }

        // Xữ lý nút Lưu
        private void btnLuu_DV_Click(object sender, EventArgs e)
        {
            while (kiemtraloi() == true)
            {
                // Hàm xử lý bắt lỗi kiểm tra khi bị trùng dữ liệu
                if (checkbutton == true)
                {
                    bool chek = true;
                    chek = BL.DichVuBL.CheckdataDV_BL(txtTenDV_DV.Text);
                    if (chek == true)
                    {
                        MessageBox.Show("Tên Dịch vụ đã tồn tại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtTenDV_DV.Focus();
                        break;
                    }
                    else
                    {
                        ThemMoiDichvu();
                        MessageBox.Show("Tạo mới thành công!");
                        LamMoi();
                    }
                }
                else
                {
                    CapNhatDichvu();
                    MessageBox.Show("Sửa thành công!");
                    LamMoi();
                    btnTaomoi_DV.Enabled = true;

                }
                //Load lai gridview
                DichVuBL dichvu = new DichVuBL();
                grcDanhsachDV_DV.DataSource = dichvu.LoadthongtinDV_BL();
                LoadThongTinDichVu();
                break;
            }
        }

        // hàm làm mới
        void LamMoi()
        {
            if (checkbutton == true)
            {
                cmbNhomDV_DV.SelectedItem = null;
                txtMaDV_DV.Text = "";
                txtTenDV_DV.Text = "";
                txtGiaDV_DV.Text = "";
                memoGhiChuDV_DV.Text = "";
                chkTrangThai_DV.Checked = false;
            }
            else
            {
                cmbNhomDV_DV.SelectedItem = null;
                //txtMaDV_DV.Text = "";
                txtTenDV_DV.Text = "";
                txtGiaDV_DV.Text = "";
                memoGhiChuDV_DV.Text = "";
                chkTrangThai_DV.Checked = false;
            }

        }
        // hàm tạo mới dịch vụ
        void ThemMoiDichvu()
        {
            string manhomdv = cmbNhomDV_DV.SelectedValue.ToString();
            string tendichvu = txtTenDV_DV.Text.Trim();
            string ghichu = memoGhiChuDV_DV.Text.Trim();
            Decimal giadichvu = Decimal.Parse(txtGiaDV_DV.Text);
            bool trangthai = true;
            if (chkTrangThai_DV.Checked == true)
            {
                trangthai = true;
            }
            else
            {
                trangthai = false;
            }
            //BL.DichVuBL.ThemMoiDV_BL(manhomdv, madichvu, tendichvu,giadichvu, ghichu, trangthai);
            context.SP_DICHVU_INSERT(manhomdv, tendichvu, giadichvu, ghichu, trangthai);
        }

        //Hàm chỉnh sửa dịch vụ
        void CapNhatDichvu()
        {
            string madichvu = (string)grdDanhsach.GetRowCellValue(grdDanhsach.FocusedRowHandle, grdDanhsach.Columns[0]);
            string manhomdv = cmbNhomDV_DV.SelectedValue.ToString();
            string tendichvu = txtTenDV_DV.Text;
            Decimal giadichvu = Decimal.Parse(txtGiaDV_DV.Text);
            string ghichu = memoGhiChuDV_DV.Text;
            bool trangthai = true;
            if (chkTrangThai_DV.Checked == true)
            {
                trangthai = true;
            }
            else
            {
                trangthai = false;
            }
            BL.DichVuBL.ChinhsuaDV_BL(manhomdv, madichvu, tendichvu, giadichvu, ghichu, trangthai);
        }

        // hàm xữ lý xem chi tiết 
        public void LoadThongTinDichVu()
        {
            //Enable 2 bảng bên phải.
            grcThongtinDV_DV.Enabled = true;
            btnLuu_DV.Enabled = false;
            btnLamMoi_DV.Enabled = false;
            btnSua_DV.Enabled = true;

            //Chỉnh readonly = true cho tất cả các textfield và checkbox, combobox chỉ cho phép xem.
            cmbNhomDV_DV.Enabled = false;
            txtMaDV_DV.Properties.ReadOnly = true;
            txtTenDV_DV.Properties.ReadOnly = true;
            txtGiaDV_DV.Properties.ReadOnly = true;
            memoGhiChuDV_DV.Properties.ReadOnly = true;
            chkTrangThai_DV.Properties.ReadOnly = true;

            // Load thông tin chi tiết của dòng đang chọn
            using (HMSHospitalEntities show = new HMSHospitalEntities())
            {
                string Madv = (string)grdDanhsach.GetRowCellValue(grdDanhsach.FocusedRowHandle, grdDanhsach.Columns[0]);
                var ThongTin = (from tt in show.DichVus
                                where tt.MaDichVu == Madv
                                select tt).FirstOrDefault<DichVu>();
                txtMaDV_DV.Text = ThongTin.MaDichVu;
                txtTenDV_DV.Text = ThongTin.TenDichVu;
                txtGiaDV_DV.Text = ThongTin.GiaDichVu.ToString();
                cmbNhomDV_DV.SelectedValue = ThongTin.MaNhomDV;
                memoGhiChuDV_DV.Text = ThongTin.GhiChu;
                // kiểm tra trạng thái trong database
                if (ThongTin.TrangThai == true)
                    chkTrangThai_DV.Checked = true;
                else
                    chkTrangThai_DV.Checked = false;
            }
        }

        //Load thong tin chi tiet cua dong dc chon
        private void grdDanhsach_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            LoadThongTinDichVu();
        }

        private void txtGiaDV_DV_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsNumber(e.KeyChar) && e.KeyChar != (char)Keys.Back)
                e.Handled = true;
        }

        private void txtTenDV_DV_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsLetterOrDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && !Char.IsWhiteSpace(e.KeyChar))
                e.Handled = true;
        }

        //Hàm kiểm tra null của textbox
        public bool kiemtraloi()
        {
            int count = 0;
            bool iGia = false;
            bool iTenNhomDV = false;
            if (txtGiaDV_DV.Text.ToString().Trim() == "")
            {
                iGia = true;
                count++;
            }
            if (txtTenDV_DV.Text.Trim() == "")
            {
                iTenNhomDV = false;
                count++;
            }
            if (count == 0)
            {
                return true;
            }
            else
            {
                if (count > 1)
                {
                    MessageBox.Show("Vui lòng nhập đầy đủ thông tin vào các trường có dấu '*'", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    if (iGia == true)
                    {
                        MessageBox.Show("Vui lòng nhập Giá Dịch vụ!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtGiaDV_DV.Focus();
                    }
                    if (iTenNhomDV == true)
                    {
                        MessageBox.Show("Vui lòng nhập Tên Dịch vụ!", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtTenDV_DV.Focus();
                    }
                }
                return false;
            }
        }

        private void txtMaDV_DV_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsLetterOrDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && !Char.IsWhiteSpace(e.KeyChar))
                e.Handled = true;
        }
    }
}
